#pragma once

#include <vector>
#include <string>

#include <tools.h>

namespace Y {
    struct TTestResult {
        std::string Name;
        int InputSize;
        long long RunTime;
    };

    long long GetTickCount();

    class ISortTest {
    private:
        //
    protected:
        virtual std::string GetName() const = 0;
        virtual void GenerateRandomData(std::vector<int> &v);
        virtual void Sort(std::vector<int> &v) = 0;
    public:
        TTestResult Test(int inputSize);
    };
} // namespace Y
